1、sem_init
	初始化无名信号量
	sem: 信号量句柄
	pshared: 信号量共享方式，0 只在线程间共享，非0可在进程间共享
	value: 信号量初始值
	成功返回0，失败返回-1
	int sem_init(sem_t *sem, int pshared, unsigned int value);
2、sem_destroy
	脱离无名信号量
	sem: 信号量句柄
	成功返回0，失败返回-1
	int sem_destroy(sem_t *sem);
3、sem_open
	打开或创建一个有名信号量
	name: 信号量名称，非路径
	oflag: 创建标志，O_CREAT 不存在则创建，O_CREAT|O_EXCL 不存在则创建，存在则报错
	mode: 访问权限
	value: 信号量初始值
	成功返回信号量句柄，失败返回SEM_FAILED
	sem_t *sem_open(const char *name, int oflag);
	sem_t *sem_open(const char *name, int oflag, mode_t mode, unsigned int value);
4、sem_close
	关闭有名信号量，进程终止时会自动关闭有名信号量
	sem: 信号量句柄
	成功返回0，失败返回-1
	int sem_close(sem_t *sem);
5、sem_unlink
	删除有名信号量，如果信号量正在使用则标记为分离状态，直到引用计数为0时才删除
	name: 信号量名称
	成功返回0，失败返回-1
	int sem_unlink(const char *name);
6、sem_getvalue
	获取信号量的值
	sem: 信号量句柄
	sval: 存储信号量的值
	成功返回0，失败返回-1
	int sem_getvalue(sem_t *sem, int *sval);
7、sem_wait
	阻塞式获取信号量
	sem: 信号量句柄
	成功返回0，失败返回-1
	int sem_wait(sem_t *sem);
8、sem_trywait
	非阻塞式获取信号量
	sem: 信号量句柄
	成功返回0，失败返回-1
	int sem_trywait(sem_t *sem);
9、sem_timedwait
	指定时间获取信号量
	sem: 信号量句柄
	abs_timeout: 绝对时间
	成功返回0，失败返回-1
	int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
10、sem_post
	发送信号量信号量
	sem: 信号量句柄
	成功返回0，失败返回-1
	int sem_post(sem_t *sem);